﻿<html>
	
<head>
	<title>4.3. Полуавтоматический ТАСинг</title>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta name="generator" content="HelpNDoc Personal Edition 3.9.1.648">
	<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
	<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
	<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
	<!--[if lte IE 8]>
		<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
	<![endif]-->
	<style type="text/css">
		#topic_header
		{
			background-color: #EFEFEF;
		}
	</style>
	<script type="text/javascript" src="js/jquery.min.js"></script>
	<script type="text/javascript" src="js/hnd.js"></script>
	<script type="text/javascript">
		$(document).ready(function()
		{
			if (top.frames.length == 0)
			{
				var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
				top.location.href = "index.html?" + sTopicUrl;
			}
			else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
			{
				top.FrameTOC.SelectTocItem("SemiautomaticTASing");
			}
		});
	</script>
</head>

<body>

	<div id="topic_header">
			<div id="topic_header_content">
				<h1>4.3. Полуавтоматический ТАСинг</h1>
				
				<div id="topic_breadcrumb">
					<a href="BeginnersGuide.html">Курс для новичка</a> &rsaquo;&rsaquo; <a href="TASingMethodology.html">4. Методология ТАСинга</a> &rsaquo;&rsaquo; </div>
				</div>
			<div id="topic_header_nav">
				<a href="TASingMethodology.html"><img src="img/arrow_up.png" alt="Parent"/></a>
				
				<a href="NonlinearTASing.html"><img src="img/arrow_left.png" alt="Previous"/></a>
				
				<a href="ProgramCustomization.html"><img src="img/arrow_right.png" alt="Next"/></a>
				
				</div>
			<div class="clear"></div>
		</div>
	<div id="topic_content">
		
<p></p>
<p><span class="rvts20">Полуавтоматический ТАСинг</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><img align="right" alt="" style="padding : 6px;" src="lib/toolbox-method3.png"/></p>
<p class="rvps10"><span class="rvts22">Этот метод является дальнейшим развитием идей нелинейного метода ТАСинга.</span></p>
<p class="rvps10"><span class="rvts22">Во многих случаях ТАСеру требуется сразу видеть результат своих изменений </span><span class="rvts22">Ввод</span><span class="rvts22">а. В идеале он должен осознавать все последствия своего решения прямо в момент принятия решения. Но в реальности драгоценные мгновенья уходят на введение своего решения в компьютер и последующую навигацию Курсором Проигрывателя до конца участка.</span></p>
<p class="rvps10"><span class="rvts22">В таких случаях вы можете переложить навигацию Курсором Проигрывателя на Тасэдитор и сосредоточить внимание только на редактировании. Тасэдитор будет мгновенно реагировать на каждое изменение </span><span class="rvts22">Ввод</span><span class="rvts22">а и отображать новый результат, возвращая </span><span class="rvts22">Курсор Проигрывателя в конец текущего участка.</span></p>
<p class="rvps10"><span class="rvts22">Благодаря тому, что вы ощущаете воздействие каждого щелчка на игровой процесс, достигается высочайший уровень взаимосвязи между ТАСером и игрой. При таком тесном взаимодействии не только ТАСер управляет игрой, но и игра направляет действия ТАСера в нужное русло. </span><span class="rvts22">Конечно, такой высокий уровень взаимозависимости далеко не всегда полезен, ведь это сужает ваш спектр мыслей, не позволяя взглянуть на игру свысока и применить к ней логику из других игр или других сфер жизни.</span></p>
<p class="rvps10"><span class="rvts22">Однако, когда текущий участок несложен, и все факторы оптимальности уже известны (и требуется только найти их идеальное сочетание), полезно отвлечься от всего остального и посвятить всё внимание перебору вариантов. Тогда вы успеете проверить гораздо больше подходов, до того как вам надоест текущий участок.</span></p>
<p class="rvps10"><span class="rvts22">Режим Записи должен быть выключен. Галочка "Auto-restore last position" должна быть включена. </span><span class="rvts22">Галочки "Turbo seek" и "Follow cursor" обычно отключены, и включаются по мере необходимости.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts23">Основное занятие:</span></p>
<p class="rvps10"><span class="rvts54"><br/></span></p>
<ol style="text-indent: 30px; margin-left: 0px; list-style-position: inside;">
<li class="rvps10"><span class="rvts22">Проскроллировать Piano Roll к началу редактируемого участка мувика, доставить сюда Курсор Проигрывателя, определиться с целью.</span></li>
<li class="rvps10"><span class="rvts22">Определить кадр конца участка и оставить там Курсор Проигрывателя.</span></li>
<li class="rvps10"><span class="rvts22">Предположить наличие ошибки на участке, взвесить имеющиеся факторы оптимальности и прикинуть способ исправления ошибки.</span></li>
<li class="rvps10"><span class="rvts22">Н</span><span class="rvts22">авигация курсором мыши к любому кадру </span><span class="rvts22">текущего участка</span><span class="rvts22"> осуществляется </span><span class="rvts22">практически</span><span class="rvts22"> мгновенно.</span></li>
<li class="rvps10"><span class="rvts22">Редактировать участок мышью. </span><span class="rvts22">После каждого вносимого изменения Курсор Проигрывателя будет автоматически проигрывать участок и останавливаться на кадре, который считался концом участка. При необходимости можно передвигать текущий конец участка, перемещая Курсор Проигрывателя вручную (колесом). </span><span class="rvts22">Шаги 4 и 5 непрерывно чередуются, пока редактирование не считается законченным в соответствии с критерием оптимальности.</span></li>
<li class="rvps10"><span class="rvts22">[</span><span class="rvts37">необязательный шаг</span><span class="rvts22">] </span><span class="rvts22">Сохранить готовый подход в любую свободную Закладку, например, в слот </span><span class="rvts27">8</span><span class="rvts22"> или </span><span class="rvts27">7</span><span class="rvts22">.</span></li>
<li class="rvps10"><span class="rvts22">Если это не первый подход к прохождению участка, с</span><span class="rvts22">равнить новый</span><span class="rvts22"> результат с лучшим </span><span class="rvts22">старым</span><span class="rvts22"> результатом, используя критерий оптимальности. Если новый подход оказался лучше</span><span class="rvts22"> (или это первый </span><span class="rvts22">подход</span><span class="rvts22">),</span><span class="rvts22"> следует </span><span class="rvts22">сохранить его в Закладку </span><span class="rvts27">9</span><span class="rvts22">. </span><span class="rvts22">Слот </span><span class="rvts27">9</span><span class="rvts22"> будет отвечать за хранение самого лучшего результата шлифовки участка.</span></li>
<li class="rvps10"><span class="rvts22">Если осталось желание испробовать другую серию подходов, следует вернуться к шагу 3, и так до тех пор пока не иссякнут идеи по данному участку.</span></li>
<li class="rvps10"><span class="rvts22">[</span><span class="rvts37">необязательный шаг</span><span class="rvts22">]</span><span class="rvts22"> Когда идеи начинают иссякать, можно почерпнуть информацию из прошлого или будущего: пересмотреть несколько участков, перетаскивая Курсор Проигрывателя или отпустив паузу эмулятора.&nbsp;</span><span class="rvts22"> При необходимости можно по-быстрому дорисовать </span><span class="rvts22">Ввод</span><span class="rvts22"> для просмотра предстоящих событий игры. Но п</span><span class="rvts22">ри возвращении к редактированию участка нужно вернуть Курсор Проигрывателя на кадр целевого события.</span></li>
<li class="rvps10"><span class="rvts22">Когда идеи полностью иссякли, восстановить лучший </span><span class="rvts22">подход</span><span class="rvts22"> из Журнала Истории или из Закладки </span><span class="rvts27">9</span><span class="rvts22"> в текущий мувик</span><span class="rvts22"> и перейти к следующему участку</span><span class="rvts22">.</span></li>
</ol>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<hr style="height: 1px; color : #000000;  background-color : #000000; border-width : 0px;"/>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Основное отличие этого метода от предыдущего в том, что Курсор Проигрывателя как правило находится в конце текущего участка, а не в начале. При каждом усечении Гринзоны Курсор Проигрывателя добегает к концу участка, точнее, к тому кадру, где был конец участка до изменения Ввода. Если после изменения Ввода изменился и кадр целевого события, можно дополнительно передвинуть </span><span class="rvts22">голубой курсор колесом мыши. Но зачастую точное позиционирование не требуется, порой достаточно только увидеть цепочку событий, происходящих на участке в результате изменённого Ввода.</span></p>
<p class="rvps10"><span class="rvts22">Проигрывание участка автоматически запускается после каждого промежуточного шага изменений Ввода, даже если вы ещё не закончили свою мысль и не собираетесь сравнивать текущий результат с результатом предыдущего подхода. К счастью, во время увлечённого редактирования ТАСер обычно не смотрит на экран FCEUX, продолжая щёлкать по Piano Roll, пока не воплотит свою мысль в виде полноценной кнопочной комбинации. А когда </span><span class="rvts22">Ввод</span><span class="rvts22"> уже представляет интерес, ТАСер обращает внимание на экран эмулятора или окно Memory Watch.</span></p>
<p class="rvps10"><span class="rvts22">Например, чтобы создать прыжок через яму, вы сначала рисуете длинное зажатие </span><span class="rvts32">R</span><span class="rvts22"> и даже не обращаете внимание, что на экране FCEUX в это время Марио на бегу проваливается в яму. Вы дорисовываете нажатие кнопки </span><span class="rvts32">A</span><span class="rvts22">, а затем уже смотрите на окно эмулятора и стираете/дорисовываете дополнительные нажатия </span><span class="rvts32">A</span><span class="rvts22">, тем самым изменяя начало и длительность прыжка и наблюдая траекторию спрайта Марио.</span></p>
<p class="rvps10"><span class="rvts22">Таким образом, процесс шлифовки </span><span class="rvts22">Ввод</span><span class="rvts22">а в данном методе представляет собой одновременный просмотр и редактирование участка. </span><span class="rvts22">ТАСер входит в тесный информационный контакт с игрой и вскоре начинает мыслить синхронно с её откликами. Игра начинает помогать ТАСеру отфильтровывать и принимать решения. </span><span class="rvts22">В результате можно потерять беспристрастность ума и пойти на поводу очевидных решений, поощряемых игрой. Поэтому не стоит использовать этот метод ТАСинга постоянно, рекомендуется чередовать его с предыдущим.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Как и в простом нелинейном методе, здесь можно менять скорость эмуляции, получая различные вариации полуавтоматического метода:</span></p>
<ol style="text-indent: 30px; margin-left: 0px; list-style-position: inside;">
<li class="rvps10"><span class="rvts22">редактирование с </span><span class="rvts22">просмотром</span><span class="rvts22"> изменений в реальном времени</span></li>
<li class="rvps10"><span class="rvts22">редактирование с </span><span class="rvts22">просмотром</span><span class="rvts22"> изменений при замедленной эмуляции</span></li>
<li class="rvps10"><span class="rvts22">редактирование с мгновенным просмотром итога (турбо)</span></li>
</ol>
<p class="rvps10"><a name="turbo-seeking"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Турбо-добегание создаёт ассоциацию между двумя отдалёнными событиями (началом и концом участка). Здесь эта ассоциация многократно усиляется благодаря окончательному убиранию посредников – добегание запускается ещё до отпускания кнопки мыши во время рисования Ввода. Едва ТАСер щёлкает по какому-то кадру Piano Roll, он уже видит результат, который вообще-то наступает в игре через несколько секунд после этого кадра.</span></p>
<p class="rvps10"><a name="FindStartButtonPress"></a>
<span class="rvts22">В качестве примера можно привести поиск первого кадра для нажатия кнопки </span><span class="rvts32">Start</span><span class="rvts22">. Во многих играх нажать эту кнопку можно раньше, чем отобразится графика на экране. Кроме того, нередко после срабатывания </span><span class="rvts32">Start</span><span class="rvts22"> игра на некоторое время задумывается, ничем не подавая вид, что нажатие сработало. Только через секунду или две мы видим смену заставки и тем самым узнаём, что нажатие </span><span class="rvts32">Start</span><span class="rvts22"> сработало.</span></p>
<p class="rvps10"><span class="rvts22">В традиционном методе на перебор подходов (поиск самого первого кадра) уйдёт 5-10 минут, а полуавтоматический метод позволяет проверить все эти подходы гораздо быстрее</span><span class="rvts22">:</span></p>
<ul style="text-indent: 30px; margin-left: 0px; list-style-position: inside;">
<li class="rvps10"><span class="rvts22">Включаете галочку </span><span class="rvts22">"Auto-restore last position" и </span><span class="rvts22">"Turbo seek". </span><span class="rvts22">Отключаете галочку "Follow cursor".</span></li>
<li class="rvps10"><span class="rvts22">Ставите пробное нажатие </span><span class="rvts32">Start</span><span class="rvts22"> на кадре, где оно точно сработает, например, на кадр 100.</span></li>
<li class="rvps10"><span class="rvts22">Просматриваете срабатывание кнопки до момента, когда по изображению на экране уже понятно, что </span><span class="rvts32">Start </span><span class="rvts22">сработал (например, на экране появился текст "World 1-1"). Допустим, это кадр 150. Оставляете Курсор Проигрывателя на этом месте – это и будет конец участка.</span></li>
<li class="rvps10"><span class="rvts22">Теперь удаляете своё пробное нажатие (в окне FCEUX тут же мигнёт и исчезнет "</span><span class="rvts22">World 1-1",</span><span class="rvts22"> и останется только экран заставки, так как нажатия </span><span class="rvts32">Start</span><span class="rvts22"> больше нет).</span></li>
<li class="rvps10"><span class="rvts22">Ставите нажатие </span><span class="rvts32">Start</span><span class="rvts22"> на начало участка, то есть заведомо раньше, чем оно может сработать. Например, поставьте его на первый кадр мувика. Изображение в окне FCEUX мигнёт, но экран заставки останется без изменений, так как </span><span class="rvts32">Start</span><span class="rvts22"> не сработал.</span></li>
<li class="rvps10"><span class="rvts22">Зажимаете </span><span class="rvts34">Ctrl + Shift</span><span class="rvts22"> и начинаете периодически нажимать </span><span class="rvts34">Insert</span><span class="rvts22"> (раз в секунду или чаще – это зависит от мощности вашего компьютера). После каждого нажатия </span><span class="rvts34">Ctrl + Shift + Insert</span><span class="rvts22"> символ кнопки </span><span class="rvts32">Start </span><span class="rvts22">отодвигается на один кадр вперёд, а в окне FCEUX вы видите, повлияло ли это нажатие на состояние игры в кадре 150, или не повлияло.</span></li>
<li class="rvps10"><span class="rvts22">Пока </span><span class="rvts32">Start </span><span class="rvts22">не доходит до момента, с которого игра начинает принимать Ввод, окно FCEUX будет показывать заставку. Но когда очередное нажатие </span><span class="rvts34">Ctrl + Shift + Insert</span><span class="rvts22"> передвинет </span><span class="rvts32">Start</span><span class="rvts22"> на подходящий кадр, в окне FCEUX появится экран "</span><span class="rvts22">World 1-1"</span><span class="rvts22">.</span></li>
<li class="rvps10"><span class="rvts22">Таким образом, вы обнаружили самый первый возможный кадр для нажатия </span><span class="rvts32">Start</span><span class="rvts22">. Номер этого кадра, скорее всего, будет намного меньше 100.</span></li>
</ul>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Таким же образом можно очень быстро находить оптимальную длительность зажатия кнопки </span><span class="rvts32">A</span><span class="rvts22"> для приземления в нужной точке. Также можно быстро манипулировать удачей во многих играх. И вообще, удобство автоматического турбо-добегания наглядно проявляется в ситуациях, когда на участке важен только один фактор оптимальности, и требуется быстро перебрать сотню однотипных подходов.</span></p>
<p class="rvps10"><span class="rvts22">В целом, полуавтоматический метод стимулирует меньше думать и больше экспериментировать. Во многих видеоиграх такой подход приводит к успеху, однако ТАСинг требует от вас чего-то большего, так что постарайтесь не слишком увлекаться комфортностью этого метода.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<hr style="height: 1px; color : #000000;  background-color : #000000; border-width : 0px;"/>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Плюсы метода:</span></p>
<p class="rvps14"><span class="rvts23">+ </span><span class="rvts22">Мгновенная навигация и высокая скорость работы побуждает выполнять больше тестов.</span></p>
<p class="rvps14"><span class="rvts23">+ </span><span class="rvts22">Постоянная отдача позволяет адаптироваться к игре на ходу, корректировать свои решения и преждевременно отсекать в уме ошибочные подходы.</span></p>
<p class="rvps14"><span class="rvts23">+ </span><span class="rvts22">Возможность пропускать ненужные сцены.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Минусы метода:</span></p>
<p class="rvps14"><span class="rvts23">– </span><span class="rvts22">Настойчивая игровая отдача провоцирует ТАСера отсекать некоторые нелогичные, но потенциально выигрышные подходы.</span></p>
<p class="rvps14"><span class="rvts23">– </span><span class="rvts22">Упор на мышиное управление.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts26">Когда рекомендуется использовать:</span><span class="rvts22"> </span><span class="rvts22">когда нужно отшлифовать участок, для которого уже известны все факторы оптимальности. Например, для быстрой пересинхронизации старого Ввода этот метод удобнее предыдущего. Также он может быть удобнее при создании первого прохождения участка.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<hr style="height: 1px; color : #000000;  background-color : #000000; border-width : 0px;"/>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Теперь вы изучили главные принципы работы в Тасэдиторе и можете начинать ТАСить интересующую игру. </span><span class="rvts22">Лучше всего обучает практика, и только в процессе реальной разработки своего личного ТАСа вы сможете освоить все премудрости этой деятельности.</span></p>
<p class="rvps10"><span class="rvts22">После нескольких недель практического ТАСинга рекомендуется заново перечитать третью и четвёртую главу данного Курса, чтобы понять текст на более глубоком уровне.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">В следующей главе: </span><a class="rvts28" href="ProgramCustomization.html">тонкая настройка программы</a><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<div class="rvps10"><table width="100%" border="1" cellpadding="6" cellspacing="2" style="border-color: #000000; border-style: solid;">
<tr valign="top">
<td style="border-color: #000000; border-style: solid;"><p class="rvps10"><span class="rvts26">ПРАКТИЧЕСКОЕ ЗАДАНИЕ: </span><span class="rvts22">Хорошенько отшлифуйте </span><span class="rvts22">Ввод</span><span class="rvts22"> в распланированных участках своего тестового мувика. Если пробное разбиение Маркерами оказалось неудачным – переразбивайте на ходу.</span></p>
<p class="rvps10"><span class="rvts22">Используйте только второй и третий методы ТАСинга, так как традиционный метод устарел. Попробуйте также воспользоваться турбо в нужных местах.</span></p>
<p class="rvps10"><span class="rvts26">Примерное время выполнения: </span><span class="rvts22">30-60 минут.</span></p>
</td>
</tr>
</table>
</div>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p></p>
<p class="rvps8"><span class="rvts18">Created with the Personal Edition of HelpNDoc: </span><a class="rvts19" href="http://www.helpndoc.com/feature-tour/create-ebooks-for-amazon-kindle">Produce Kindle eBooks easily</a></p>
</div>
	
	<div id="topic_footer">

			<div id="topic_footer_content">
				&copy; 2011-2013 АнС</div>
		</div>
	</body>
	
</html>

